package com.example.a14;

public class Application14 {
    public static void main(String[] args) {
        Proxy proxy = new Proxy();
        Target target = new Target();
        proxy.setMethodInterceptor((o, method, objects, methodProxy) -> {
            System.out.println("before");
//                return method.invoke(target, objects);  // 反射调用
//                return methodProxy.invoke(target, objects);  // 内部无反射，结合目标使用
            return methodProxy.invokeSuper(o, objects);  // 内部无反射，结合代理使用
        });

        proxy.save();
        proxy.save(10);
        proxy.save(10L);
    }
}
